<?php
/**
 * Created by PhpStorm.
 * User: Array
 * Date: 2016/12/22
 * Time: 上午9:56
 */
namespace App\Tools;

use Carbon\Carbon;

/**
 * Class Pano
 * @package App\Tools
 *
 * 调用本特性时需要先定义 protected $images,$configoption;
 *
 * $images:         图片路径，需要是字符串，如：'~/Desktop/pano.jpg ~/Desktop/pano.jpg'
 * $configoption:   配置文件模式
 */
trait Pano
{
    protected function createPano()
    {
        //获取随机目录
        $ramdompath = $this->getRandomPath();

        //获取选项的值并组合字符串
        $option = $this->getOutputPath($ramdompath);

        //按需获取配置文件路径
        $config = $this->getConfig($this->configoption);

        //组合系统命令
        $command = public_path() . config('pano.krpanotools') . 'makepano ' . $this->images . $config . $option;

//        exec($command, $shell_output, $status);
//        print_r($shell_output);
//        var_dump($status);

//        passthru($command,$return_var);
//        var_dump($return_var);
        system($command, $return_var);
//        var_dump($return_var);
    }

    //返回完整krpano的配置选项
    protected function getOutputPath($ramdompath)
    {


        //分片图的保存路径
        $tilepath = '-tilepath="' . public_path() . $ramdompath . config('pano.tilepath') . '" ';

        //缩略图的保存路径
        $thumbpath = '-thumbpath="' . public_path() . $ramdompath . config('pano.thumbpath') . '" ';

        //预览图的保存路径
        $previewpath = '-previewpath="' . public_path() . $ramdompath . config('pano.previewpath') . '" ';

        //vr 模式使用的分片图保存路径
        $customimage = '-"customimage[vr].path"="' . public_path() . $ramdompath . config('pano.customimage') . '" ';

        //XML的保存路径
        $xmlpath = '-xmlpath="' . public_path() . $ramdompath . config('pano.xmlpath') . '" ';

        //组合选项
        $options = $tilepath . $thumbpath . $previewpath . $customimage . $xmlpath;

        return $options;
    }

    //根据不同选项，返回不同的生成模式配置文件路径
    protected function getConfig($configoption)
    {
        if ($configoption == 0) {
            //自定义漫游模式
            $config = '-config="' . public_path() . config('pano.customconfig') . '" ';
        } elseif ($configoption == 1) {
            //1为普通漫游模式
            $config = '-config="' . public_path() . config('pano.normalconfig') . '" ';
        } else {
            //0为全景漫游模式
            $config = '-config="' . public_path() . config('pano.vtourconfig') . '" ';
        }

        return ' ' . $config;
    }

    //创建随机目录
    protected function getRandomPath()
    {
        return config('pano.outputpath') . '/' . Carbon::now()->format('Ym') . '/' . Carbon::now()->format('d') . str_random(6);
    }
}